
// Boost Includes ==============================================================
#include <boost/python.hpp>
#include <boost/cstdint.hpp>

// Includes ====================================================================
#include <ColorWrapper.h>
#include <OpenSG/OSGColor.h>

// Using =======================================================================
using namespace boost::python;

// Module ======================================================================
void Export_src_pyste_Color()
{
    class_< osg::Color3<float> >("Color3f", init<  >())
        .def(init< const osg::Color3<float>& >())
        .def(init< osg::Real32, osg::Real32, osg::Real32 >())
        .def_readonly("Null", &osg::Color3<float>::Null)
        .def("convertFromHSV", &osg::Color3<float>::convertFromHSV)
        .def("convertToHSV", &osg::Color3<float>::convertToHSV)
        .def("minPart", &osg::Color3<float>::minPart)
        .def("maxPart", &osg::Color3<float>::maxPart)
        .def("clear", &osg::Color3<float>::clear)
        .def("setValuesRGB", &osg::Color3<float>::setValuesRGB)
        .def("setValuesHSV", &osg::Color3<float>::setValuesHSV)
        .def("setRandom", &osg::Color3<float>::setRandom)
        .def("setRGB", &osg::Color3<float>::setRGB)
        .def("setValue", (void (osg::Color3<float>::*)(const osg::Char8*) )&osg::Color3<float>::setValue)
        .def("setValue", (void (osg::Color3<float>::*)(osg::Char8*) )&osg::Color3<float>::setValue)
        .def("getRGB", &osg::Color3<float>::getRGB)
        .def("getValuesRGB", &Color3_getValuesRGB_tuple<osg::Real32>)
        .def("getValuesHSV", &Color_getValuesHSV< osg::Color3<osg::Real32> >)
        .def("red", &osg::Color3<float>::red)
        .def("green", &osg::Color3<float>::green)
        .def("blue", &osg::Color3<float>::blue)
        .def("getValuesRGB", &Color3_getValuesRGB_tuple<osg::Real32>)
        .def("getValuesRGB", &Color3_getValuesRGB_tuple<osg::Real32>)
        .def("equals", &osg::Color3<float>::equals)
        .staticmethod("maxPart")
        .staticmethod("minPart")
        .staticmethod("convertToHSV")
        .staticmethod("convertFromHSV")
        .def( self * other< osg::Real32 >() )
        .def( self == self )
        .def( self != self )
    ;

    class_< osg::Color3<unsigned char> >("Color3ub", init<  >())
        .def(init< const osg::Color3<unsigned char>& >())
        .def(init< osg::UInt8, osg::UInt8, osg::UInt8 >())
        .def_readonly("Null", &osg::Color3<unsigned char>::Null)
        .def("convertFromHSV", &osg::Color3<unsigned char>::convertFromHSV)
        .def("convertToHSV", &osg::Color3<unsigned char>::convertToHSV)
        .def("minPart", &osg::Color3<unsigned char>::minPart)
        .def("maxPart", &osg::Color3<unsigned char>::maxPart)
        .def("clear", &osg::Color3<unsigned char>::clear)
        .def("setValuesRGB", &osg::Color3<unsigned char>::setValuesRGB)
        .def("setValuesHSV", &osg::Color3<unsigned char>::setValuesHSV)
        .def("setRandom", &osg::Color3<unsigned char>::setRandom)
        .def("setRGB", &osg::Color3<unsigned char>::setRGB)
        .def("setValue", (void (osg::Color3<unsigned char>::*)(const osg::Char8*) )&osg::Color3<unsigned char>::setValue)
        .def("setValue", (void (osg::Color3<unsigned char>::*)(osg::Char8*) )&osg::Color3<unsigned char>::setValue)
        .def("getRGB", &osg::Color3<unsigned char>::getRGB)
        .def("getValuesRGB", &Color3_getValuesRGB_tuple<osg::UInt8>)
        .def("getValuesHSV", &Color_getValuesHSV< osg::Color3<osg::UInt8> >)
        .def("red", &osg::Color3<unsigned char>::red)
        .def("green", &osg::Color3<unsigned char>::green)
        .def("blue", &osg::Color3<unsigned char>::blue)
        .def("getValuesRGB", &Color3_getValuesRGB_tuple<osg::UInt8>)
        .def("getValuesRGB", &Color3_getValuesRGB_tuple<osg::UInt8>)
        .def("equals", &osg::Color3<unsigned char>::equals)
        .staticmethod("maxPart")
        .staticmethod("minPart")
        .staticmethod("convertToHSV")
        .staticmethod("convertFromHSV")
        .def( self * other< osg::UInt8 >() )
        .def( self == self )
        .def( self != self )
    ;

    class_< osg::Color4<float> >("Color4f", init<  >())
        .def(init< const osg::Color4<float>& >())
        .def(init< const osg::Real32, const osg::Real32, const osg::Real32, const osg::Real32 >())
        .def_readonly("Null", &osg::Color4<float>::Null)
        .def("clear", &osg::Color4<float>::clear)
        .def("setValuesRGBA", &osg::Color4<float>::setValuesRGBA)
        .def("setValuesHSV", &osg::Color4<float>::setValuesHSV)
        .def("setRandom", &osg::Color4<float>::setRandom)
        .def("setRGBA", &osg::Color4<float>::setRGBA)
        .def("setValue", (void (osg::Color4<float>::*)(const osg::Char8*) )&osg::Color4<float>::setValue)
        .def("setValue", (void (osg::Color4<float>::*)(osg::Char8*) )&osg::Color4<float>::setValue)
        .def("getRGBA", &osg::Color4<float>::getRGBA)
        .def("getValuesRGBA", &Color4_getValuesRGBA_tuple<osg::Real32>)
        .def("getValuesHSV", &Color_getValuesHSV< osg::Color4<osg::Real32> >)
        .def("red", &osg::Color4<float>::red)
        .def("green", &osg::Color4<float>::green)
        .def("blue", &osg::Color4<float>::blue)
        .def("alpha", &osg::Color4<float>::alpha)
        .def("getValuesRGBA", &Color4_getValuesRGBA_tuple<osg::Real32>)
        .def("getValuesRGBA", &Color4_getValuesRGBA_tuple<osg::Real32>)
        .def("equals", &osg::Color4<float>::equals)
        .def( self * other< osg::Real32 >() )
        .def( self == self )
        .def( self != self )
    ;

    class_< osg::Color4<unsigned char> >("Color4ub", init<  >())
        .def(init< const osg::Color4<unsigned char>& >())
        .def(init< const osg::UInt8, const osg::UInt8, const osg::UInt8, const osg::UInt8 >())
        .def_readonly("Null", &osg::Color4<unsigned char>::Null)
        .def("clear", &osg::Color4<unsigned char>::clear)
        .def("setValuesRGBA", &osg::Color4<unsigned char>::setValuesRGBA)
        .def("setValuesHSV", &osg::Color4<unsigned char>::setValuesHSV)
        .def("setRandom", &osg::Color4<unsigned char>::setRandom)
        .def("setRGBA", &osg::Color4<unsigned char>::setRGBA)
        .def("setValue", (void (osg::Color4<unsigned char>::*)(const osg::Char8*) )&osg::Color4<unsigned char>::setValue)
        .def("setValue", (void (osg::Color4<unsigned char>::*)(osg::Char8*) )&osg::Color4<unsigned char>::setValue)
        .def("getRGBA", &osg::Color4<unsigned char>::getRGBA)
        .def("getValuesRGBA", &Color4_getValuesRGBA_tuple<osg::UInt8>)
        .def("getValuesHSV", &Color_getValuesHSV< osg::Color4<osg::UInt8> >)
        .def("red", &osg::Color4<unsigned char>::red)
        .def("green", &osg::Color4<unsigned char>::green)
        .def("blue", &osg::Color4<unsigned char>::blue)
        .def("alpha", &osg::Color4<unsigned char>::alpha)
        .def("getValuesRGBA", &Color4_getValuesRGBA_tuple<osg::UInt8>)
        .def("getValuesRGBA", &Color4_getValuesRGBA_tuple<osg::UInt8>)
        .def("equals", &osg::Color4<unsigned char>::equals)
        .def( self * other< osg::UInt8 >() )
        .def( self == self )
        .def( self != self )
    ;

}

